[LeetCode] 125 - Valid Palindrome

題意

判斷字串是否回文,只考慮字母和數字。

解法

兩個指針一個從頭一個從尾,遇到非字母數字的跳過即可。

程式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {
public:
bool isPalindrome(string s) {
int index1 = 0 , index2 = s.length() - 1 ;
while ( index1 < index2 ){
if (!(s[index1]>='0'&&s[index1]<='9'||s[index1]>='a'&&s[index1]<='z'||s[index1]>='A'&&s[index1]<='Z') ){
index1 ++ ;
continue ;
}
if ( s[index1] >= 'A' && s[index1] <= 'Z' )
s[index1] += 32 ;
if (!(s[index2]>='0'&&s[index2]<='9'||s[index2]>='a'&&s[index2]<='z'||s[index2]>='A'&&s[index2]<='Z') ){
index2 -- ;
continue ;
}
if ( s[index2] >= 'A' && s[index2] <= 'Z' )
s[index2] += 32 ;
if ( s[index1] != s[index2] )
return false ;
index1 ++ ;
index2 -- ;
}
return true ;
}
};